package com.qf.ssm.mapper;

import com.qf.ssm.entity.order.OrderMessage;
import com.qf.ssm.entity.order.UserAddress;
import com.qf.ssm.entity.user.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author wzy
 * @Date 0015 2021-02-15 17:20
 * @Version 1.0
 */
public interface UserMapper {
    /**
     * 管理员登录方法
     * 查询成功则登录，查询不到就登录失败
     *
     * @param admin
     * @return
     */
    Admin adminLogin(@Param("admin") Admin admin);

    /**
     * 用户登录方法
     * 查询成功则登录，查询不到就登录失败
     *
     * @param user
     * @return
     */
    User userLogin(@Param("user") User user);

    /**
     * 普通用户信息查询
     *
     * @return
     */
    List<User> userSelect();

    /**
     * 会员信息查询
     *
     * @return
     */
    List<User> vipuserSelect();

    /**
     * 添加普通用户信息
     *
     * @param user
     * @return
     */
    int userInsert(@Param("user") User user);

    /**
     * 添加会员信息
     *
     * @param user
     * @return
     */
    int vipuserInsert(@Param("vipuser") User user);

    /**
     * 添加会员等级信息
     *
     * @param vipLevel
     * @return
     */
    int viplevelInsert(@Param("viplevel") VipLevel vipLevel);

    /**
     * 删除VIP等级信息
     *
     * @param id
     * @return
     */
    int viplevelDelete(@Param("id") int id);

    /**
     * 查询VIP等级信息
     *
     * @return
     */
    List<VipLevel> vipLevelSelect();

    /**
     * 修改VIP等级信息
     * @param vipLevel
     * @return
     */
    int viplevelUpdate(@Param("viplevel") VipLevel vipLevel);

    /**
     * 逻辑删除普通用户信息
     *
     * @param id
     * @return
     */
    int userDelete(@Param("id") int id);

    /**
     * 逻辑删除VIP用户信息
     *
     * @param id
     * @return
     */
    int vipuserDelete(@Param("id") int id);

    /**
     * 修改普通用户信息
     *
     * @param user
     * @return
     */
    int userModify(@Param("user") User user);

    /**
     * 修改VIP用户信息
     *
     * @param user
     * @return
     */
    int vipuserModify(@Param("vipuser") User user);

    /**
     * 查询成长模型设置表信息
     *
     * @return
     */
    List<GrowthSettings> growthSettingsSelect();

    /**
     * 添加成长模型设置表信息
     *
     * @return
     */
    int growthSettingsInsert(@Param("growthSettings") GrowthSettings growthSettings);

    /**
     * 修改成长模型设置表信息
     *
     * @param growthSettings
     * @return
     */
    int growthSettingsUpdate(@Param("growthSettings") GrowthSettings growthSettings);

    /**
     * 删除成长模型设置表信息
     *
     * @param id
     * @return
     */
    int growthSettingsDelete(@Param("id") int id);

    /**
     * 查询成长模型设置表信息
     *
     * @return
     */
    List<GrowthSettings> growthSettingsIDSelect();

    /**
     * 查询用户来源项
     *
     * @return
     */
    List<UserResource> userResourceSelect();

    /**
     * 添加模型金额设置表信息
     *
     * @param moneySettings
     * @return
     */
    int moneySettingsInsert(@Param("moneysetting") MoneySettings moneySettings);

    /**
     * 删除模型金额设置表信息
     *
     * @param id
     * @return
     */
    int moneySettingsDelete(@Param("id") int id);

    /**
     * 查询模型金额设置表信息
     *
     * @return
     */
    List<MoneySettings> moneySettingsSelect();

    /**
     * 修改模型金额设置表信息
     *
     * @param moneySettings
     * @return
     */
    int moneySettingsUpdate(@Param("moneysetting") MoneySettings moneySettings);

    /**
     * 根据提交的用户相关信息进行对用户信息进行查询（动态查询）
     *
     * @param userDynamicQuery
     * @return
     */
    List<User> userDynamicQuery(@Param("user") UserDynamicQuery userDynamicQuery);

    /**
     * 根据提交的用户相关信息进行对VIP会员信息进行查询（动态查询）
     * @param vipuserDynamicQuery
     * @return
     */
    List<User> vipuserDynamicQuery(@Param("vipuser") VipuserDynamicQuery vipuserDynamicQuery);


    /**
     * 添加rmf模型设置表
     * @param rmfModelSettings
     * @return
     */
    int rmfInsert(@Param("rmf") RmfModelSettings rmfModelSettings);

    /**
     * 删除rmf模型设置表
     * @param id
     * @return
     */
    int rmfDelete(@Param("id") int id);

    /**
     * 查询rmf模型设置表
     * @return
     */
    List<RmfModelSettings> rmfSelect();

    /**
     * 修改rmf模型设置表
     * @param rmfModelSettings
     * @return
     */
    int rmfUpdate(@Param("rmf") RmfModelSettings rmfModelSettings);

    /**
     * 查询用户简要订单信息
     * @param uid
     * @return
     */
    List<OrderMessage> orderSelect(@Param("uid") int uid);

    /**
     *查询用户简要订单信息
     * @param uid
     * @return
     */
    List<OrderMessage> orderDetailSelect(@Param("uid") int uid);

    /**
     * 查询会员积分详情
     * @param uid
     * @return
     */
    List<Points_details> pointsDetailSelect(@Param("uid") int uid);

    /**
     * 查询配送地址详情
     * @param uid
     * @return
     */
    List<UserAddress> addrSelect(@Param("uid") int uid);
}
